{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 词频聚类\n",
    "活动描述信息在events.csv文件：共110维特征\n",
    "前9列：event_id, user_id, start_time, city, state, zip, country, lat, and lng.\n",
    "event_id：id of the event, \n",
    "user_id：id of the user who created the event.  \n",
    "city, state, zip, and country： more details about the location of the venue (if known).\n",
    "lat and lng： floats（latitude and longitude coordinates of the venue）\n",
    "start_time： 字符串，ISO-8601 UTC time，表示活动开始时间\n",
    "\n",
    "后101列为词频：count_1, count_2, ..., count_100，count_other\n",
    "count_N：活动描述出现第N个词的次数\n",
    "count_other：除了最常用的100个词之外的其余词出现的次数\n",
    " \"\"\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "#导入必要的工具包\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "from sklearn.cluster import MiniBatchKMeans\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn import metrics\n",
    "\n",
    "from sklearn.decomposition import PCA\n",
    "import time\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "import scipy.sparse as ss\n",
    "import scipy.io as sio\n",
    "import pickle\n",
    "\n",
    "from sklearn.preprocessing import normalize"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "13418"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#提取event\n",
    "eventids = pickle.load(open('PE_eventIndex.pkl','rb'))\n",
    "n_event = len(eventids)\n",
    "n_event"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 提取user相关event\n",
    "fin = open('events.csv','rb')\n",
    "fin.readline()\n",
    "\n",
    "eventWord = ss.dok_matrix((n_event, 101))\n",
    "\n",
    "for line in fin.readlines():\n",
    "    cols = line.strip().decode().split(\",\")\n",
    "    eventId = str(cols[0])\n",
    "    \n",
    "    if eventId in eventids:\n",
    "        i = eventids[eventId]\n",
    "        \n",
    "        for j in range(9,109):\n",
    "            eventWord[i,j-9] = cols[j]\n",
    "fin.close()        \n",
    "\n",
    "eventWord = normalize(eventWord, norm='l2', copy=False)\n",
    "sio.mmwrite('eventWord', eventWord)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "#读取训练数据\n",
    "eventWord = sio.mmread('eventWord')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 一个参数点（聚类数据为K）的模型，在校验集上评价聚类算法性能\n",
    "def K_cluster_analysis(K, X_train):\n",
    "    start = time.time()\n",
    "    \n",
    "    print(\"K-means begin with clusters: {}\".format(K));\n",
    "    \n",
    "    #K-means,在训练集上训练\n",
    "    mb_kmeans = MiniBatchKMeans(n_clusters = K)\n",
    "    mb_kmeans.fit(X_train)\n",
    "    \n",
    "    # 在训练集上测试\n",
    "    pred = mb_kmeans.predict(X_train)\n",
    "\n",
    "    # K值的评估标准\n",
    "    CH_score = metrics.silhouette_score(X_train,pred)\n",
    "    \n",
    "    end = time.time()\n",
    "    print(\"CH_score: {}, time elaps:{}\".format(CH_score, int(end-start)))\n",
    "\n",
    "    return CH_score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "K-means begin with clusters: 10\n",
      "CH_score: 0.1404562082788174, time elaps:15\n",
      "K-means begin with clusters: 20\n",
      "CH_score: 0.1263979104375392, time elaps:12\n",
      "K-means begin with clusters: 30\n",
      "CH_score: 0.1292243026016459, time elaps:13\n",
      "K-means begin with clusters: 40\n",
      "CH_score: 0.12139855713706968, time elaps:13\n",
      "K-means begin with clusters: 50\n",
      "CH_score: 0.13854242371350453, time elaps:13\n",
      "K-means begin with clusters: 60\n",
      "CH_score: 0.12611822332698341, time elaps:13\n",
      "K-means begin with clusters: 70\n",
      "CH_score: 0.1341296656011363, time elaps:10\n",
      "K-means begin with clusters: 80\n",
      "CH_score: 0.1251307458079875, time elaps:12\n",
      "K-means begin with clusters: 90\n",
      "CH_score: 0.1335719817981116, time elaps:10\n",
      "K-means begin with clusters: 100\n",
      "CH_score: 0.13983560349545104, time elaps:11\n"
     ]
    }
   ],
   "source": [
    "# 设置超参数（聚类数目K）搜索范围\n",
    "Ks = [10, 20, 30,40,50,60,70,80,90,100]\n",
    "CH_scores = []\n",
    "for K in Ks:\n",
    "    ch= K_cluster_analysis(K, eventWord)\n",
    "    CH_scores.append(ch)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x1a41d384a8>]"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 绘制不同模型的性能，找到最佳模型／参数（分数最高）\n",
    "plt.plot(Ks, np.array(CH_scores), 'b-')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
